/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.general.controlador;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.abstracts.ControladorAbstract;
import sv.com.intesal.general.bean.Empresa;
import sv.com.intesal.general.sql.SQLEmpresa;

/**
 *
 * @author ejerez
 */
public class EmpresaControlador extends ControladorAbstract {

    public void insert(Empresa em) throws Exception {
        try {
            super.setPreparedStatement(SQLEmpresa.insert);
            super.ps.setString(1, em.getNombre_em());
            super.ps.setString(2, em.getDireccion_em());
            super.ps.setString(3, em.getNrc_em());
            super.ps.setString(4, em.getGiro_em());
            super.ps.setString(5, em.getNit_em());
            super.ps.setString(6, em.getEmail_em());
            super.ps.setString(7, super.v.getEstado(em.getEstado_filtro_em()));
            super.ps.executeUpdate();

        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    public void update(Empresa em) throws Exception {
        try {
            super.setPreparedStatement(SQLEmpresa.update);
            super.ps.setString(1, em.getNombre_em());
            super.ps.setString(2, em.getDireccion_em());
            super.ps.setString(3, em.getNrc_em());
            super.ps.setString(4, em.getGiro_em());
            super.ps.setString(5, em.getNit_em());
            super.ps.setString(6, em.getEmail_em());
            super.ps.setString(7, super.v.getEstado(em.getEstado_filtro_em()));
            super.ps.setInt(8, em.getCodigo_em());
            super.ps.executeUpdate();
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    public List<Empresa> getEmpresas() throws Exception {
        List<Empresa> lista = new ArrayList<Empresa>();
        try {
            this.getExecuteQuery(SQLEmpresa.getEmpresas);
            while (super.rs.next()) {
                lista.add(this.getEmpresa(super.rs));
            }
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    public List<Empresa> getEmpresasActivos() throws Exception {
        List<Empresa> lista = new ArrayList<Empresa>();
        try {
            this.getExecuteQuery(SQLEmpresa.getEmpresasActivos);
            while (super.rs.next()) {
                lista.add(this.getEmpresa(super.rs));
            }
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    private Empresa getEmpresa(ResultSet rs) throws Exception {
        try {
            Empresa em = new Empresa();
            em.setCodigo_em(rs.getInt("codigo_em"));
            em.setNombre_em(rs.getString("nombre_em"));
            em.setDireccion_em(rs.getString("direccion_em"));
            em.setNrc_em(rs.getString("nrc_em"));
            em.setGiro_em(rs.getString("giro_em"));
            em.setNit_em(rs.getString("nit_em"));
            em.setEmail_em(rs.getString("email_em"));
            em.setEstado_em(rs.getString("estado_em"));
            em.setEstado_filtro_em(v.getEstado(rs.getString("estado_em")));
            return em;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }
}
